package com.j.Collection.list;


import java.util.ArrayList;

/**
 * 高级泛型
 * */
public class TestAdvencedGeneric {
    public static void main(String[] args) {
        //动态泛型:直接new对象
        ArrayList<Integer> arrayList=new ArrayList<>();
        //静态泛型
        MyStaticClass.method(new Dog());
    }

}

class MyStaticClass{

    /**
     * 创建一个静态泛型，接收一个Animal类型的参数，
     * 只有Animal类型和实现Comparable类的参数才能够调用这个方法
     *
     * */
    public static <T extends Animal & Comparable> void method(T t){

    }
}
abstract class Animal{

}
/**
 * 继承Animal,实现Comparable，使得让Dog类是一个可排序的对象
 * Comparable<>中的内容是所比的对象类型，里面的类型又决定着compareTo()方法中的类型
 * */
class Dog extends Animal implements Comparable<Dog>{
   // @Override
    public int compareTo(Dog o) {

        return 0;
    }

}
class Cat extends Animal{

}/**
 * MyClass的集合泛型
 * E作为参数，可以是任意的包装类型
 * */
class MyClass<E>{
    public void m1(E e){

    }
}
